package ipcc

import "time"

type Normal struct {
	AppId  string `json:"appId"`
	CallId string `json:"callId"`
	Event  string `json:"event"`
	Time   string `json:"timeStamp"`
	Data   string `json:"Data"`
}

type DtmfRpt struct {
	AppId  string `json:"appId"`
	CallId string `json:"callId"`
	Event  string `json:"event"`
	Time   string `json:"timeStamp"`
	Data   string `json:"Data"`
	Dtmf   string `json:"dtmfCode"`
}

type RecordMsg struct {
	AppId  string `json:"appId"`
	CallId string `json:"callId"`
	Event  string `json:"event"`
	Time   string `json:"timeStamp"`
	Data   string `json:"Data"`
	File   string `json:"fileName"`
	Loacal string `json:"localFileName"`
}

type Callover struct {
	AppId    string `json:"appId"`
	CallId   string `json:"callId"`
	Event    string `json:"event"`
	Time     string `json:"timeStamp"`
	Data     string `json:"Data"`
	FileName string `json:"fileName"`
	Dir      int    `json:"dir"`
	Ring     string `json:"ringFileName"`
	Reson    int    `json:"reason"`
}

type Hangerrpt struct {
	AppId  string `json:"appId"`
	CallId string `json:"callId"`
	Event  string `json:"event"`
	Dir    string `json:"dir"`
	Reason int    `json:"reason"`
}

type IncomingCallEvent struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	Caller    string `json:"caller"`
	Called    string `json:"called"`
	TimeStamp string `json:"timeStamp"`
}

type DirectBeginRpt struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	Caller    string `json:"caller"`
	Called    string `json:"called"`
	TimeStamp string `json:"timeStamp"`
}

type CallbackBeginRpt struct {
	Event  string `json:"event"`
	CallId string `json:"callId"`
	AppId  string `json:"appId"`
	Caller string `json:"caller"`
	Called string `json:"called"`
	//Data      string `json:"data"`
	TimeStamp string `json:"timeStamp"`
}

type IncomingCallAck struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	TimeStamp string `json:"timeStamp"`
}

type CallStatRpt struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	ServiceId string `json:"serviceId"`
	Dir       int    `json:"dir"`
	AnsCode   int    `json:"ansCode"`
	SipCode   string `json:"exCode"`
	//Data      string `json:"data"`
	TimeStamp string `json:"timeStamp"`
}

type DirectToService struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	Reason    int    `json:"reason"`
	Data      string `json:"data"`
	TimeStamp string `json:"timeStamp"`
}

type PredictOutCallBeginRpt struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	Caller    string `json:"caller"`
	Data      string `json:"data"`
	TimeStamp string `json:"timeStamp"`
}

type CallDisconnectRpt struct {
	Event    string `json:"event"`
	CallId   string `json:"callId"`
	AppId    string `json:"appId"`
	Dir      int    `json:"dir"`
	Number   string `json:"number"`
	Filename string `json:"fileName"`
	//HangupDisposition string `json:"hangupDisposition"`
	//Obj               string `json:"obj"`
	Reason int `json:"reason"`
	//Date              string `json:"date"`
	TimeStamp string `json:"timeStamp"`
}

type MultyNode struct {
	Data     string `json:"data"`
	Event    string `json:"event"`
	RetCode  string `json:"code"`
	Start    string `json:"start"`
	End      string `json:"end"`
	DtmfCode string `json:"dtmfCode"`
}

type Multrpt struct {
	AppId  string      `json:"appId"`
	CallId string      `json:"callId"`
	Data   string      `json:"data"`
	Event  string      `json:"event"`
	Status int         `json:"status"`
	Hungup string      `json:"hungup"`
	Result []MultyNode `json:"result"`
}

type HoldBegin struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	Data      string `json:"data"`
	TimeStamp string `json:"timeStamp"`
}

type HoldEnd struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	Data      string `json:"data"`
	TimeStamp string `json:"timeStamp"`
}

type TransferSuccess struct {
	Event       string `json:"event"`
	CallId      string `json:"callId"`
	AppId       string `json:"appId"`
	TransferId  string `json:"transferId"`
	TransferNum string `json:"transferNum"`
	Data        string `json:"data"`
	TimeStamp   string `json:"timeStamp"`
}

type TransferFaile struct {
	Event       string `json:"event"`
	CallId      string `json:"callId"`
	AppId       string `json:"appId"`
	TransferNum string `json:"transferNum"`
	Reason      int    `json:"reason"`
	Data        string `json:"data"`
	TimeStamp   string `json:"timeStamp"`
}

type ConsultBegin struct {
	Event      string `json:"event"`
	CallId     string `json:"callId"`
	AppId      string `json:"appId"`
	ConsultId  string `json:"consultId"`
	ConsultNum string `json:"consultNum"`
	Data       string `json:"data"`
	TimeStamp  string `json:"timeStamp"`
}

type ConsultFaile struct {
	Event      string `json:"event"`
	CallId     string `json:"callId"`
	AppId      string `json:"appId"`
	ConsultNum string `json:"consultNum"`
	Reason     int    `json:"reason"`
	Data       string `json:"data"`
	TimeStamp  string `json:"timeStamp"`
}

type ConsultEnd struct {
	Event      string `json:"event"`
	CallId     string `json:"callId"`
	AppId      string `json:"appId"`
	ConsultId  string `json:"consultId"`
	ConsultNum string `json:"consultNum"`
	Data       string `json:"data"`
	TimeStamp  string `json:"timeStamp"`
}

type CallLeaveEndRpt struct {
	Event         string `json:"event"`
	CallId        string `json:"callId"`
	AppId         string `json:"appId"`
	Filename      string `json:"fileName"`
	LocalFileName string `json:"localFileName"`
	Date          string `json:"date"`
	Data          string `json:"data"`
	TimeStamp     string `json:"timeStamp"`
}

type IvrReportDtmf struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	DtmfCode  string `json:"dtmfCode"`
	Data      string `json:"data"`
	TimeStamp string `json:"timeStamp"`
}

type IvrPlayoverRpt struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	Data      string `json:"data"`
	TimeStamp string `json:"timeStamp"`
}

type CallServiceDtmf struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	DtmfCode  string `json:"dtmfCode"`
	Data      string `json:"data"`
	TimeStamp string `json:"timeStamp"`
}

type AsrSpeakRpt struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	TimeStamp string `json:"timeStamp"`
	VoiceId   string `json:"voiceId"`
}

type AsrSpeakEndRpt struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	TimeStamp string `json:"timeStamp"`
}

type AsrStartRpt struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	Ssrc      string `json:"ssrc"`
	TimeStamp string `json:"timeStamp"`
}

type AsrResultRpt struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	TimeStamp string `json:"timeStamp"`
	VoiceId   string `json:"voiceId"`
	Text      string `json:"asrText"`
	ErrCode   string `json:"errorCode"`
	ErrMsg    string `json:"errorMsg"`
}

type AsrTimeOutRpt struct {
	AppId     string `json:"appId"`
	CallId    string `json:"callId"`
	Event     string `json:"event"`
	TimeStamp string `json:"timeStamp"`
}

type EavesDropRpt struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	Type      int    `json:"type"`
	State     int    `json:"state"`
	Data      string `json:"data"`
	TimeStamp string `json:"timeStamp"`
}

type IpccRingAudit struct {
	Event     string `json:"event"`
	Accountid string `json:"accountid"`
	AppId     string `json:"appId"`
	Id        int    `json:"id"`
	Result    int    `json:"result"`
	Reason    string `json:"reason"`
	Data      string `json:"data"`
	TimeStamp string `json:"timeStamp"`
}

type Detail struct {
	ServiceId   string `json:"serviceId"`
	CallMethod  string `json:"callMethod"`
	ServiceTime int    `json:"serviceTime"`
	StartTime   string `json:"startTime"`
}

type CallCancel struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	TimeStamp string `json:"timeStamp"`
}

/*
type CallBillRpt struct {
	Event       string   `json:"event"`
	CallId      string   `json:"callId"`
	AppId       string   `json:"appId"`
	CallerCode  string   `json:"caller"`
	CalledCode  string   `json:"called"`
	TotalTime   int      `json:"totalTime"`
	IvrTime     int      `json:"ivrTime"`
	UserTime    int      `json:"userTime"`
	ServiceTime int      `json:"serviceTime"`
	Tts         int      `json:"tts"`
	Charge      int      `json:"charge"`
	DetailList  []Detail `json:"detailList"`
	Data        string   `json:"data"`
	TimeStamp   string   `json:"timeStamp"`
}
*/
type CallBillRpt struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	Caller    string `json:"caller"`
	Called    string `json:"called"`
	TotalTime int    `json:"totalTime"`
	IvrTime   int    `json:"ivrTime"`
	TimeStamp string `json:"timeStamp"`
}

type CaccStateRpt struct {
	Event     string `json:"event"`
	CallId    string `json:"callId"`
	AppId     string `json:"appId"`
	ErrorCode int    `json:"errorCode"`
	Data      string `json:"data"`
	TimeStamp string `json:"timeStamp"`
}

type CallNotifyRpt struct {
	AppId   string `json:"appId"`
	CallId  string `json:"callId"`
	Event   string `json:"event"`
	Dtmf    string `json:"dtmf"`
	AnsCode int    `json:"ansCode"`
	//Data   string `json:"data"`
}

type outCallInfo struct {
	AppId   string `json:"appId"`
	Caller  string `json:"caller"`
	Called  string `json:"called"`
	Data    string `json:"data"`
	Timeout int    `json:"timeout"`
	AiFlag  int    `json:"enableAi"`
}

type playInfo struct {
	Appid     string `json:"appId"`
	CallId    string `json:"callId"`
	GetKey    int    `json:"getkey"`
	Flag      int    `json:"playFlag"`
	Voice     string `json:"voiceStr"`
	PlayTime  int    `json:"playTime"`
	MaxKey    int    `json:"maxRevCnt"`
	Key2End   string `json:"key2End"`
	SpaceTime int    `json:"spaceTime"`
	TotalTime int    `json:"totalTime"`
	Data      string `json:"data"`
	KeyStop   int    `json:"keyStop"`
}

type multyInfo struct {
	Appid    string     `json:"appId"`
	Callid   string     `json:"callId"`
	PlayTime int        `json:"playTime"`
	Orders   []playInfo `json:"orders"`
}

type stopPlay struct {
	AppId  string `json:"appId"`
	CallId string `json:"callId"`
	Data   string `json:"data"`
}

type hungupInfo struct {
	AppId  string `json:"appId"`
	CallId string `json:"callId"`
}

type rspon struct {
	Code   string `json:"retCode"`
	Appid  string `json:"appid"`
	Callid string `json:"callid"`
}

type callstat struct {
	callid     string
	appid      string
	caller     string
	called     string
	status     string
	startTime  time.Time
	answerTime time.Time
}

type replyInfo struct {
	AppId   string `json:"appId"`
	CallId  string `json:"callId"`
	AnsCode int    `json:"ansCode"`
	AiFlag  int    `json:"enableAi"`
}

type VoiceInfo struct {
	Voice string `json:"voice"`
	Flag  int    `json:"flag"`
}

type CallNotifyV2Info struct {
	AppId    string      `json:"appId"`
	Caller   string      `json:"caller"`
	Callee   string      `json:"called"`
	Orders   []VoiceInfo `json:"voices"`
	GetKey   int         `json:"getKey"`
	PlayTime int         `json:"playTime"` //播放多久后，转接
}

type TransferInfo struct {
	AppId  string `json:"appId"`
	CallId string `json:"callId"`
	Caller string `json:"caller"`
	Called string `json:"called"`
	Voice  string `json:"fileName"`
	Data   string `json:"data"`
}

type CallBackInfo struct {
	AppId         string `json:"appId"`
	Caller        string `json:"caller"`
	Called1       string `json:"called1"`
	Caller2       string `json:"caller2"`
	Called2       string `json:"called2"`
	Called1Play   string `json:"called1Play"`
	Data          string `json:"data"`
	Timeout       int    `json:"timeout"`
	CalleeDisPlay string `json:"calledDisPlay"`
	PredictCall   bool   `json:"PredictCall"`
}

type ThreeWayCallSip struct {
	AppId  string `json:"appId"`
	CallId string `json:"callId"`
	Number string `json:"number"`
	Data   string `json:"data"`
}

type MonitorInfo struct {
	AppId  string `json:"appId"`
	CallId string `json:"callId"`
	Data   string `json:"data"`
}
